//
// Created by PC on 2023/4/11.
/*
 http://oj.ryipedu.com/problem.php?id=1538
 https://www.luogu.com.cn/problem/P7072
1538: 直播获奖
时间限制 : 1.000 sec  内存限制 : 128 MB

【 题目描述 】
NOI2130 即将举行。为了增加观赏性，CCF决定逐一评出每个选手的成绩，并直播即时的获奖分数线。本次竞赛的获奖率为w%，即当前排名前w%的选手的最低成绩就是即时的分数线。
更具体地，若当前已评出了p个选手的成绩，则当前计划获奖人数为max(1,[P×w%])//向下取整，其中w是获奖百分比，[x]表示对x向下取整，max(x,y) 表示x和y中较大的数。如有选手成绩相同，则所有成绩并列的选手都能获奖，因此实际获奖人数可能比计划中多。
作为评测组的技术人员，请你帮 CCF 写一个直播程序。

【 输入 】
第1行两个正整数n,w。分别代表选手总数与获奖率。
第2行有n个非负整数，依次代表逐一评出的选手成绩。
【 输出 】
只有一行，包含n个非负整数，依次代表选手成绩逐一评出后，即时的获奖分数线。相邻两个整数间用一个空格分隔。

【 样例输入 】
10 60
200 300 400 500 600 600 0 300 200 100
【 样例输出 】
200 300 400 400 400 500 400 400 300 300
 */
// 时间超限


#include <iostream>
using namespace std;

void swap(int &a,int &b)
{
    int t = a;
    a=b;
    b=t;
}

void printArr(int *p, int n)
{
    for (int i = 0; i < n; ++i)
    {
        cout<<p[i]<<"   ";
    }
}
int main()
{
    int n,w;
    cin>>n>>w;
    int scores[n];
    for (int i = 0; i < n; ++i)
    {
        cin>>scores[i];
    }
    for (int j = 0; j < n ; ++j)
    {
        // 先算出通过人数
        int num = max(1,int((j+1)*w/100));
        // 再通过人数确定分数线
        // 根据当前总人数的分数, 排序
        int cur = scores[j];
        int i=j;
        while(i>0 && cur<scores[i-1])
        {
            swap(scores[i],scores[i-1]);
            --i;
        }
        // 取前num名, 确定分数线
        int index=j;
        while(num>1)
        {
            index--;
            num--;
        }
        cout<<scores[index]<<" ";
//        for (int k = j; k >= 0; --k)
//        {
//            if (k==0)
//            {
//                cout<<scores[k]<<" ";
//                break;
//            }
//            else if (num<=0)
//            {
//                cout<<scores[k+1]<<" ";
//                break;
//            }
//            num--;
//        }
    }
//    printArr(scores,n);
    return 0;
}